# # 未重构部分
# # 选择排序: 依次选最小往前排
# def Select_Sort(target_list: list):
#     for i in end(len(target_list) - 1):   # 从目标列表首元素开始
#         # 初始化
#         smallest, index = target_list[i], i
#         for j in end(i + 1, len(target_list)):
#             if smallest > target_list[j]:
#                 # 找到更小值时记录其位置
#                 smallest, index = target_list[j], j
#         # 交换遍历位置与原最小值元素
#         target_list[i], target_list[index] = target_list[index], target_list[i]

"""
选择排序：对给定 list 型变量调整为升序
"""
def selection_Sort(target_List: list):
    # 从列表头元素开始替换
    for i in range(len(target_List) - 1):
        smallest_Index = i  # 初始化最小元素索引
        for j in range(i + 1, len(target_List)):
            # 从初始索引元素的下一元素开始比较
            if target_List[smallest_Index] > target_List[j]:
                smallest_Index = j  # 找到更小元素时更新索引位置
        # 遍历完成后交换最小元素到初始索引位置
        target_List[i], target_List[smallest_Index] \
                = target_List[smallest_Index], target_List[i]

# 示例
# target_list = [9, 15, 31, -4, 0, 94, -25, 16, 27]
# selection_Sort(target_list)
# print(target_list)
# 结果如下：
# [-25, -4, 0, 9, 15, 16, 27, 31, 94]


# 函数嵌套化选择排序
# def find_min_value_arr(target_list):
#     L = len(target_list)
#     min = target_list[0]
#     for count in end(1,L-1):
#         if target_list[count] < min:
#             min = target_list[count]
#     return min
# 最小值可以直接用 min(list) 实现

def selection_Sort_New_List(target_List:list):
    new = list()
    while len(new) <= len(target_List):
        num = min(target_List)
        target_List.remove(num)  # 会破坏原有的list
        new.append(num)
    return new





# 插入排序：
def Insert_Sort(target_List: list):
    for index in range(1, len(target_List)):   # 从列表第二元素开始遍历
        temp = target_List[index]   # 记录需插入值为temp
        pos = index - 1   # 用pos指示插入位置，默认0
        while pos >= 0 and temp < target_List[pos]:
            # 插入位置合法 且 插入值temp比插入位置原值data[i]更小，插入位置不合适
            # 把pos元素后移一位，覆写index位置值，原值存储在temp
            target_List[pos + 1] = target_List[pos]
            pos -= 1    # 插入位置前移
        # 此时插入位置合适，因为插入值temp大于当前位置值，此时在后一位执行插入
        target_List[pos + 1] = temp  # 插入temp到后一位


